package cn.growthgate.fgo.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则工具类
 * 
 * @author GrowthGate
 * @since 2019年3月27日
 *
 */
public class RegularUtils {
	
	/** url地址 */
	public static final String REGEX_URL = "^[a-zA-z]+://[^\\s]*$";
	/** 邮箱 */
	public static final String REGEX_EMAIL = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
	/** 手机号 */
	public static final String REGEX_MOBILE = "^1\\d{10}$";
	/** 身份证号 */
	public static final String REGEX_ID_CARD = "^\\d{15}|\\d{18}$";
	/** 中文 */
	public static final String REGEX_CHINESE = "[\u4e00-\u9fa5]";
	/** 用户名 */
	public static final String REGEN_USERNAME = "^[a-zA-z0-9_]+$";
	
	/**
	 * 正则校验
	 * @param str 要校验的字符串
	 * @param patternStr 正则表达式
	 * @return
	 */
	public static boolean validate(String str, String regex) {
		if (str == null) {
			return false;
		}
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		return m.matches();
	}
	
	/**
	 * 查找匹配的字符串
	 * @param str 源字符串
	 * @param patternStr 正则表达式
	 * @return
	 */
	public static List<String> find(String str, String regex) {
		List<String> list = new ArrayList<>();
		if (str == null) {
			return list;
		}
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		while (m.find()) {
			list.add(m.group());
		}
		return list;
	}
	
	/**
	 * 检验是否包含匹配的正则
	 * @param str 源字符串
	 * @param patternStr 正则表达式
	 * @return
	 */
	public static boolean contain(String str, String regex) {
		if (str == null) {
			return false;
		}
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(str);
		return m.find();
	}
	
}
